package main

import (
	// "encoding/json"
	"fmt"
)

func main() {
	// map是引用数据类型，因此可以直接赋值和修改
	var p1 map[int]string // 其键的类型是int，值的类型是string
	p1 = make(map[int]string) // 创建一个空的map
	p1[1] = "Tom"
	p1[2] = "Jerry"
	fmt.Println("p1 :", p1, p1[1], p1[2])

	var p2 map[int]string = map[int]string{} // 其键的类型是int，值的类型是string
	p2[1] = "Tom" // 赋值
	fmt.Println("p2 :", p2)

	var p3 map[int]string = make(map[int]string) 
	p3[1] = "Tom"
	fmt.Println("p3 :", p3)

	p4 := map[int]string{} 
	p4[1] = "Tom"
	fmt.Println("p4 :", p4)

	p5 := make(map[int]string)
	p5[1] = "Tom"
	fmt.Println("p5 :", p5)
	
	p6 := map[int]string{
		1 : "Tom",
	}
	fmt.Println("p6 :", p6)

	// var userinfo = map[string]string{
	// 	"username": "admin",
	// 	"age": "18",
	// 	"sex": "你猜"
	// }
	// fmt.Println("userinfo :", userinfo)
	// for k, v := range userinfo {
	// 	fmt.Println(k, ":", v)
	// }

	// v,ok := userinfo["username"]
	// fmt.Println(v, ok) // 输出admin和true
	// if ok {
	// 	fmt.Println("username :", v)
	// } else {
	// 	fmt.Println("username not exist")
	// }

	// v,ok := userinfo["xxx"]
	// fmt.Println(v, ok) // 输出空值和false
	// if ok {
	// 	fmt.Println("username :", v)
	// } else {
	// 	fmt.Println("username not exist")
	// }

	// map数组
	var userinfo = make([]map[string]string, 3, 3)

	if userinfo[0] == nil {
		userinfo[0] = make(map[string]string)
		userinfo[0]["username"] = "admin"
		userinfo[0]["age"] = "18"
		userinfo[0]["height"] = "170cm"
	}

	if userinfo[1] == nil {
		userinfo[1] = make(map[string]string)
		userinfo[1]["username"] = "admin1"
		userinfo[1]["age"] = "20"
		userinfo[1]["height"] = "180cm"
	}
  fmt.Println("userinfo :", userinfo)

	// map类型的值可以是切片
	var behavior = make(map[string][]string)

	behavior["like"] = []string{"apple", "banana", "orange"}
	behavior["dislike"] = []string{"cat", "dog", "mouse"}
	fmt.Println("behavior :", behavior)
}